package com.wuage.application;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wuage.domain.model.UacAccount;
import com.wuage.interfaces.account.domain.AccountRegisterDO;
import com.wuage.interfaces.account.domain.AccountQueryDO;
import com.wuage.interfaces.account.domain.AdminSaveOrUpdateAccountDO;
import com.wuage.interfaces.account.domain.RegisterAdminDO;

import java.util.List;

/**
 * @author Shynin
 * @version 1.0
 * @date 2020-09-03 09:37
 */
public interface IUacAccountService extends IService<UacAccount> {
    IPage<UacAccount> getUsersByPage(AccountQueryDO accountQueryDO);
    UacAccount getUserByUsername(String username);
    Boolean register(AccountRegisterDO accountRegisterDO);
    Boolean enableAccount(Long id);
    UacAccount getById(Long id);
    Boolean bindEmail(Long id, String email);
    String resetPassword(Long id);
    /**
     * 重置用户密码，仅限用户系统调用
     * @param id 用户id
     * @param password 密码
     * @return 是否成功
     */
    Boolean resetPassword(Long id, String password);

    /**
     * 获取管理员列表
     * @return 用户信息
     */
    List<UacAccount> getAdmins();

    /**
     * 创建管理员
     * @param registerAdminDO 管理员信息
     * @return 是否成功
     */
    Boolean addAdmin(RegisterAdminDO registerAdminDO);

    /**
     * 管理员创建用户
     * @param adminAddAccountDO 用户信息
     * @return 用户信息
     */
    UacAccount saveOrUpdateAccount(AdminSaveOrUpdateAccountDO adminAddAccountDO);
}
